[書評]素早い開発と品質を両立させるCI/CD職人のための『GitHub CI/CD実践ガイド』

[書評]素早い開発と品質を両立させるCI/CD職人のための『GitHub CI/CD実践ガイド』

『すばやく開発する』『品質も守る』 「両方」やらなくっちゃあならないってのが「CI/CD職人」のつらいところだな 覚悟はいいか?オレはできている(via 帯コピーから)
Clock Icon2024.08.19

ソフトウェア開発は初回リリース時よりもその後の運用フェーズのほうが長く、そこで大事になるのが継続的デリバリーです。継続的デリバリーを実現するためのGitHub Actionsを活用したCI/CDの設計や運用について学べる新書を紹介します。

  • タイトル:GitHub CI/CD実践ガイド ――持続可能なソフトウェア開発を支えるGitHub Actionsの設計と運用
  • 著者 : 野村友規(@tmknom)
  • 出版社 :技術評論社 (2024/5/29)
  • 出版社リンク
  • アマゾンリンク

本書の概要

本書の特色は、著者のソフトウェア開発に対する強い思いが随所に込められている点です。GitHub Actionsの使い方を解説しただけの中身の薄い本ではなく、ソフトウェア開発の設計・運用のあるべき姿を実現するための手段としてGitHub Actionsが解説されています。

目次

  1. ソフトウェア開発とGitHub
  2. GitHub Actionsの基礎概念
  3. ワークフロー構文の基礎
  4. 継続的インテグレーションの実践
  5. 運用しやすいワークフローの設計
  6. アクションによるモジュール化
  7. クリーンなリポジトリの維持
  8. Dependabotによる依存関係バージョンアップ
  9. GitHub Releasesによるリリース自動化
  10. GitHub Packagesによるパッケージ管理
  11. OpenID Connectによるセキュアなクラウド連携
  12. コンテナオーケストレーションのデプロイメント
  13. アクションのオープンソース化
  14. GitHub Actionsの高度な使い方
  15. GitHub Actionsのセキュリティ
  16. セキュリティのシフトレフト
  17. GitHub Appsトークンによるクロスリポジトリアクセス
  18. 継続的デリバリーの実践

特におすすめしたいのは、最終章である第18章「継続的デリバリーの実践」です。

ここでは、チーム開発をする上で欠かせない、組織のパフォーマンス、バージョン管理、テスト、IaC、運用を意識した開発などが語られています。形骸化したCI/CDには意味がありません。そもそもなんのために継続的デリバリーをやるのか、そのためにはどうあるべきなのか、チーム全体で目線を合わせることがスタート地点です。

第11章および第15章~第16章のセキュリティに関する章も必読です。最初にコストをかけてセキュアなCI/CDを組むことで、安心して自由度高くCI/CDを運用できるようになります。例えば、第11章では、最新のベクトプラクティスに則ったOpenID ConnectでGitHubとAWSを連携する方法が解説されています。静的クレデンシャルはアンチパターンなので今すぐにOpenID方式へ移行しましょう。

章またぎの余白ページには、以下のようなソフトウェア開発全般の幅広いテーマの参考文献が紹介されています。この広範なテーマからも、本書が表面的なCI/CD本ではないことが伝わるでしょう。

  • 基礎技術
  • テストとドキュメンテーション
  • ソフトウェア設計
  • ソフトウェア開発
  • コンテナ技術
  • インフラストラクチャ
  • 運用
  • セキュリティ
  • システム設計

本文のいたるところに差し込まれている一口コラムも読んでいて楽しいです。

「17.4 GitHub Appsトークン生成の仕組み」のような深堀りセクションもしれっと紛れ込んでいるため、技術好きな読者も満足できる仕上がりになっています。

まとめ

各章は疎結合に独立して読めるように書かれています。400ページある本書を冒頭から精読せず、興味に応じてかいつまんで読んで、少しずつ現場に応用するのが実践的な使い方かもしれません。

本書は、プロダクト開発に関わる様々なロールの人にとって、様々な観点から学びを得られるおすすめの一冊です。

cicd-book-cover

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.